<?php

/**
 * WK 根据ip 获取天气预报信息
 * ============================================================================
 * * 版权所有 2005-2012 QQ 80342014，并保留所有权利。
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * $Author: liubo $
 * $Id: index.php 17217 2011-01-19 06:29:08Z liubo $
 
 
$baiduak='m0hGtNFa1VuEbmL36x1X2KGL';//百度地图api的密钥
$wea=new getWeather($baiduak);
$json=$wea->weatherInfo('洛阳');
 
 
*/
header("Content-type: text/html; charset=utf-8");
class getWeather{
    private $ak;
    
    public function __construct($ak){
        if($ak){
            $this->ak=$ak;
        } else {
            die('参数错误');exit;
        }
        
    }
    
    /**
     * 获取城市名称
     * @param string $ip ip地址(必须为有效ip)
     * return string $city  城市名称，如武汉
    */
    public function getCity($ip=''){
        if(!$ip){
            $ip=$this->get_client_ip();
        }
		/* 如果获取的到的ip是本地  设置默认是洛阳 */
		if($ip == '127.0.0.1'){
			$ip = '171.13.243.102';
		}
        $ak=$this->ak;
        $content = file_get_contents("http://api.map.baidu.com/location/ip?ak=$ak&ip=$ip&coor=bd09ll");
        $json = json_decode($content,true);
        $address=$json['address'];
        $cityarr=explode("|", $address);
        $city=$cityarr['2'];//不带"市",如"武汉",而不是"武汉市"
        return $city;
    }
    
    /**
     * 获取天气预报信息
     * @param string $city  城市名称，如武汉
     * return array $data 天气信息 
    */
    public function weatherInfo($city=''){
        if(!$city){
            $city=$this->getCity();
        }
        $content1=urlencode(mb_convert_encoding($city, 'gb2312', 'utf-8')); 
        $weather=file_get_contents("http://php.weather.sina.com.cn/xml.php?city=$content1&password=DJOYnieT8234jlsK&day=0");
        $ob= simplexml_load_string($weather);
        $json  = json_encode($ob);
        $data = json_decode($json, true);
        return $data;
    }
    /**
    *获取ip
    */
    public function get_client_ip(){
        if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")){
            $ip = getenv("HTTP_CLIENT_IP");
        }else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")){
            $ip = getenv("HTTP_X_FORWARDED_FOR");
        }else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
            $ip = getenv("REMOTE_ADDR");
        else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
            $ip = $_SERVER['REMOTE_ADDR'];
        else
            $ip = "unknown";
        return($ip);
    }
}



?>
